﻿using System.Collections.Generic;
using Microsoft.Practices.Prism.Interactivity.InteractionRequest;
using Microsoft.Practices.Prism.PubSubEvents;
using Mitosoft.Definitions.Services;
using Mitosoft.Definitions.ViewModels;

namespace Mitosoft.Definitions.Notifications
{
  /// <summary>
  /// Used to get information from the user which files he wants to display.
  /// </summary>
  public class FilesSelectionDialogNotification : Confirmation
  {
    #region fields

    /// <summary>
    /// Represents <see cref="FileNames"/>
    /// </summary>
    protected SortedDictionary<int, IOViewModel> _fileNames;

    /// <summary>
    /// Represents <see cref="DirectoryService"/>
    /// </summary>
    protected IDirectoryService _directoryService;

    /// <summary>
    /// Represents <see cref="EventAggregator"/>
    /// </summary>
    protected IEventAggregator _eventAggregator;

    /// <summary>
    /// Represents <see cref="InitialZoomFactor"/>
    /// </summary>
    protected double _initialZoomFactor = 1.0;

    #endregion

    #region constructors

    /// <summary>
    /// Creates an new <see cref="FilesSelectionDialogNotification"/> instance.
    /// </summary>
    // ReSharper disable once EmptyConstructor
    public FilesSelectionDialogNotification()
    {
      // Intentionally left blank.
    }

    #endregion

    #region properties

    /// <summary>
    /// Gets or sets the file names.
    /// </summary>
    public SortedDictionary<int, IOViewModel> FileNames
    {
      get { return _fileNames; }
      set { _fileNames = value; }
    }

    /// <summary>
    /// Gets or sets the service used to get directories.
    /// </summary>
    public IDirectoryService DirectoryService
    {
      get { return _directoryService; }
      set { _directoryService = value; }
    }

    /// <summary>
    /// Gets or sets the event aggregator.
    /// </summary>
    public IEventAggregator EventAggregator
    {
      get { return _eventAggregator; }
      set { _eventAggregator = value; }
    }

    /// <summary>
    /// Gets or sets the initial zoom factor.
    /// </summary>
    public double InitialZoomFactor
    {
      get { return _initialZoomFactor; }
      set { _initialZoomFactor = value; }
    }

    #endregion

    #region methods

    #endregion
  }
}
